Map

Data

---
title: "kCube Corona Virus Map"
output: 
  flexdashboard::flex_dashboard:
    orientation: rows
    social: menu
    source_code: embed
    vertical_layout: fill
---

```{r setup, include=FALSE}

#------------------ Data ------------------

library(flexdashboard)
library(nCov2019)
library(usethis)
library(devtools)
library(forcats)
library(ggplot2)
library(maps)
library(magrittr)
library(xml2)
library(rvest)
library(RCurl)
library(flexdashboard)
library(data.table)
library(RInno)
library(leaflet)
library(leafpop)
library(purrr)

URL_Deaths <- getURL("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Deaths.csv")
data_Deaths <- read.csv(text = URL_Deaths, stringsAsFactors = FALSE)

lapply(1:ncol(data_Deaths), function(i){
    if(all(is.na(data_Deaths[, i]))){
        data_Deaths <<- data_Deaths[, -i]
        return(print(paste("Column", names(data_Deaths)[i], "is missing", sep = " ")))
    } else {
        return(NULL)
    }
})

df_conf <- data_Deaths[, 1:4]

for(i in 5:ncol(data_Deaths)){
    
    data_Deaths[,i] <- as.integer(data_Deaths[,i])
    # data_Deaths[,i] <- ifelse(is.na(data_Deaths[, i]), 0 , data_Deaths[, i])
    print(names(data_Deaths)[i])
    
    if(i == 5){
        df_conf[[names(data_Deaths)[i]]] <- data_Deaths[, i]
    } else {
        df_conf[[names(data_Deaths)[i]]] <- data_Deaths[, i] - data_Deaths[, i - 1]
    }
    
    
}


df_conf1 <-  df_conf %>% tidyr::pivot_longer(cols = dplyr::starts_with("X"),
                                             names_to = "date_temp",
                                             values_to = "cases_temp")

# Parsing the date
df_conf1$month <- sub("X", "",
                      strsplit(df_conf1$date_temp, split = "\\.") %>%
                          purrr::map_chr(~.x[1]) )

df_conf1$day <- strsplit(df_conf1$date_temp, split = "\\.") %>%
    purrr::map_chr(~.x[2])


df_conf1$date <- as.Date(paste("2020", df_conf1$month, df_conf1$day, sep = "-"))

# Aggregate the data to daily
Deaths <- df_conf1 %>%
    dplyr::group_by(Province.State, Country.Region, Lat, Long, date) %>%
    dplyr::summarise(cases = sum(cases_temp)) %>%
    dplyr::ungroup() %>%
    dplyr::mutate(type = "death",
                  Country.Region = trimws(Country.Region),
                  Province.State = trimws(Province.State))

URL_Recovered <- getURL("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Recovered.csv")
data_Recovered <- read.csv(text = URL_Recovered, stringsAsFactors = FALSE)

lapply(1:ncol(data_Recovered), function(i){
    if(all(is.na(data_Recovered[, i]))){
        data_Recovered <<- data_Recovered[, -i]
        return(print(paste("Column", names(data_Recovered)[i], "is missing", sep = " ")))
    } else {
        return(NULL)
    }
})

df_conf <- data_Recovered[, 1:4]

for(i in 5:ncol(data_Recovered)){
    
    data_Recovered[,i] <- as.integer(data_Recovered[,i])
    # data_Recovered[,i] <- ifelse(is.na(data_Recovered[, i]), 0 , data_Recovered[, i])
    print(names(data_Recovered)[i])
    
    if(i == 5){
        df_conf[[names(data_Recovered)[i]]] <- data_Recovered[, i]
    } else {
        df_conf[[names(data_Recovered)[i]]] <- data_Recovered[, i] - data_Recovered[, i - 1]
    }
    
    
}




df_conf1 <-  df_conf %>% tidyr::pivot_longer(cols = dplyr::starts_with("X"),
                                             names_to = "date_temp",
                                             values_to = "cases_temp")

# Parsing the date
df_conf1$month <- sub("X", "",
                      strsplit(df_conf1$date_temp, split = "\\.") %>%
                          purrr::map_chr(~.x[1]) )

df_conf1$day <- strsplit(df_conf1$date_temp, split = "\\.") %>%
    purrr::map_chr(~.x[2])


df_conf1$date <- as.Date(paste("2020", df_conf1$month, df_conf1$day, sep = "-"))

# Aggregate the data to daily
Recovered <- df_conf1 %>%
    dplyr::group_by(Province.State, Country.Region, Lat, Long, date) %>%
    dplyr::summarise(cases = sum(cases_temp)) %>%
    dplyr::ungroup() %>%
    dplyr::mutate(type = "recovered",
                  Country.Region = trimws(Country.Region),
                  Province.State = trimws(Province.State))

URL_Confirmed <- getURL("https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv")
data_Confirmed <- read.csv(text = URL_Confirmed, stringsAsFactors = FALSE)

lapply(1:ncol(data_Confirmed), function(i){
    if(all(is.na(data_Confirmed[, i]))){
        data_Confirmed <<- data_Confirmed[, -i]
        return(print(paste("Column", names(data_Confirmed)[i], "is missing", sep = " ")))
    } else {
        return(NULL)
    }
})

df_conf <- data_Confirmed[, 1:4]

for(i in 5:ncol(data_Confirmed)){
    
    data_Confirmed[,i] <- as.integer(data_Confirmed[,i])
    # data_Confirmed[,i] <- ifelse(is.na(data_Confirmed[, i]), 0 , data_Confirmed[, i])
    print(names(data_Confirmed)[i])
    
    if(i == 5){
        df_conf[[names(data_Confirmed)[i]]] <- data_Confirmed[, i]
    } else {
        df_conf[[names(data_Confirmed)[i]]] <- data_Confirmed[, i] - data_Confirmed[, i - 1]
    }
    
    
}


df_conf1 <-  df_conf %>% tidyr::pivot_longer(cols = dplyr::starts_with("X"),
                                             names_to = "date_temp",
                                             values_to = "cases_temp")

# Parsing the date
df_conf1$month <- sub("X", "",
                      strsplit(df_conf1$date_temp, split = "\\.") %>%
                          purrr::map_chr(~.x[1]) )

df_conf1$day <- strsplit(df_conf1$date_temp, split = "\\.") %>%
    purrr::map_chr(~.x[2])


df_conf1$date <- as.Date(paste("2020", df_conf1$month, df_conf1$day, sep = "-"))

# Aggregate the data to daily
Confirmed <- df_conf1 %>%
    dplyr::group_by(Province.State, Country.Region, Lat, Long, date) %>%
    dplyr::summarise(cases = sum(cases_temp)) %>%
    dplyr::ungroup() %>%
    dplyr::mutate(type = "confirmed",
                  Country.Region = trimws(Country.Region),
                  Province.State = trimws(Province.State))

# Bind Data

coronavirus <- rbind(Confirmed, Recovered, Deaths)
```

Map
=======================================================================

```{r}
cv_data_for_plot <- coronavirus %>% 
    dplyr::filter(cases > 0) %>% 
    dplyr::group_by(Country.Region,Province.State,Lat,Long,type) %>% 
    dplyr::summarise(cases = sum(cases)) %>% 
    dplyr::mutate(log_cases = 2 * log(cases)) %>% 
    dplyr::ungroup()
cv_data_for_plot.split <- cv_data_for_plot %>% split(cv_data_for_plot$type)
pal <- colorFactor(c("orange", "red","green"), domain = c("confirmed", "death","recovered"))
map_object <- leaflet() %>% addProviderTiles(providers$CartoDB.DarkMatter)
names(cv_data_for_plot.split) %>%
    purrr::walk( function(df) {
        map_object <<- map_object %>%
            addCircleMarkers(data=cv_data_for_plot.split[[df]],
                             lng=~Long, lat=~Lat,
                             #                 label=~as.character(cases),
                             color = ~pal(type),
                             stroke = FALSE,
                             fillOpacity = 0.8,
                             radius = ~log_cases,
                             popup =  leafpop::popupTable(cv_data_for_plot.split[[df]],
                                                          feature.id = FALSE,
                                                          row.numbers = FALSE,
                                                          zcol=c("type","cases","Country.Region","Province.State")),
                             group = df,
                             #                 clusterOptions = markerClusterOptions(removeOutsideVisibleBounds = F),
                             labelOptions = labelOptions(noHide = F,
                                                         direction = 'auto'))
    })
map_object %>%
    addLayersControl(
        overlayGroups = names(cv_data_for_plot.split),
        options = layersControlOptions(collapsed = FALSE)
    )
```

Data
=======================================================================

```{r}
coronavirus %>% 
  dplyr::select(Date = date, Province = Province.State, Country = Country.Region, `Case Type` = type, `Number of Cases` = cases) %>%
  DT::datatable(rownames = FALSE,
            options = list(searchHighlight = TRUE, 
                           pageLength = 20), filter = 'top')
```